import java.rmi.registry.*;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.ArrayList;	


public class ServidorCozinha implements InterfaceCozinha {

	private ArrayList<Pedido> pedidos = new ArrayList<Pedido>();

	
	public String listaPedidos() throws RemoteException {
		
		String pedido = null;
		
		for(int i=0; i<pedidos.size(); i++) {
			
			pedido.concat(Integer.toString(pedidos.get(i).getNumero()));
			pedido.concat(";");
			pedido.concat(listaItensPedido(i));
			
		}	
		return pedido;
	}
	
	public String listaItensPedido(int i) throws RemoteException {
	
		String itens = null;
		
		for(int j=0; j<pedidos.get(i).getItems().size(); j++) {

			itens.concat(Integer.toString(pedidos.get(i).getItems().get(j).getQtde()));
			itens.concat(";");
			itens.concat(pedidos.get(i).getItems().get(j).getItem().getNome());
			itens.concat(";");
		}
		
		return itens;
	}
	
	public void baixaPedido(int num) throws RemoteException {
		
		for(int i=0; i<pedidos.size(); i++) {
			if(num == i) {
				pedidos.get(i).setStatus(true);
			}
		}
	}
	
	
	public void novoPedido(int numero, Conta conta) throws RemoteException {
		
		Pedido pedido = new Pedido(numero, conta);
		pedidos.add(pedido);
	
	}
	
	public int tempoEstimadoPedido() throws RemoteException {
		
		int i = pedidos.size();
		
		if (i <= 5)
			return 5;
		else if(i <= 10)
			return 10;
		else if (i <= 15)
			return 15;
		else if (i <= 20)
			return 20;
		else
			return 30;
		
	}
		
	public static void main (String[] args)  {
		
		try {
			
			ServidorCozinha obj = new ServidorCozinha();
			InterfaceCozinha stub = (InterfaceCozinha) UnicastRemoteObject.exportObject(obj, 0);
			
			Registry registry = LocateRegistry.getRegistry();
			registry.bind("cozinha", stub);
			System.err.println("Arrancando o Servidor...");
			
		} catch (Exception e) {
			System.err.println("Server exception: " + e.toString());
			e.printStackTrace();
		}
			
	}
}